package com.exam.api.modules.system.service;

import com.exam.api.modules.system.domain.TblRole;
import com.exam.api.modules.system.dto.RoleAddDTO;
import com.exam.api.modules.system.dto.RoleIdDTO;
import com.exam.api.modules.system.dto.RolePageDTO;
import com.exam.api.modules.system.dto.RoleUpdateDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 角色逻辑接口类
 *
 * @author bcheng
 */
public interface TblRoleService extends IService<TblRole> {
    List<TblRole> listRoles(long userId);

    /**
     * 根据用户ID查询用户角色ID列表
     * @param userId
     * @return
     */
    List<Long> listRoleIdsByUserId(long userId);

    /**
     * 根据用户ID查询用户角色编码
     *
     * @param userId 用户ID
     * @return 返回用户角色编码列表
     */
    List<String> listRoleCodes(Long userId);

    /**
     * 分页查询角色
     *
     * @param dto 查询条件
     * @return 分页数据
     */
    Page<TblRole> pageRole(RolePageDTO dto);

    /**
     * 根据角色id查询角色
     *
     * @param dto 角色id
     * @return 角色
     */
    TblRole getRole(RoleIdDTO dto);

    /**
     * 新增角色
     *
     * @param dto 新增角色信息
     */
    void addRole(RoleAddDTO dto);

    /**
     * 修改角色
     *
     * @param dto 修改角色信息
     */
    void updateRole(RoleUpdateDTO dto);

    /**
     * 删除角色
     *
     * @param dto 角色id
     */
    void deleteRole(RoleIdDTO dto);
}
